package com.anti.modular.sys.file.service;

import com.anti.commom.api.Result;
import com.anti.jdbc.support.page.PageParam;
import com.anti.jdbc.support.page.PageResult;
import com.anti.modular.sys.file.entity.SysFileInfo;
import com.anti.modular.sys.file.param.SysFileInfoParam;
import com.anti.modular.sys.file.result.SysFileInfoResult;
import org.springframework.web.multipart.MultipartFile;

import javax.servlet.http.HttpServletResponse;
import java.util.List;

/**
 * @Description TODO
 * @Author anTi
 * @Date 2021-4-7
 */
public interface SysFileInfoService {
    /**
     * 上传文件，返回文件的唯一标识
     *
     * @param file 要上传的文件
     * @return 文件id
     */
    Long saveUploadFile(MultipartFile file);

    /**
     * 文件下载
     *
     * @param sysFileInfoParam 文件下载参数
     * @param response         响应结果
     */
    void download(SysFileInfoParam sysFileInfoParam, HttpServletResponse response);

    /**
     * 文件预览
     *
     * @param sysFileInfoParam 文件预览参数
     * @param response         响应结果
     */
    void preview(SysFileInfoParam sysFileInfoParam, HttpServletResponse response);


    PageResult page(PageParam pageParam, SysFileInfoParam sysFileInfoParam);

    /**
     * 查询所有文件信息表
     *
     * @param sysFileInfoParam 查询参数
     * @return 文件信息列表
     */
    List<SysFileInfo> list(SysFileInfoParam sysFileInfoParam);

    /**
     * 查看详情文件信息表
     *
     * @param sysFileInfoParam 查看参数
     * @return 文件信息
     * @author yubaoshan
     * @date 2020/6/7 22:15
     */
    SysFileInfo detail(SysFileInfoParam sysFileInfoParam);

    /**
     * 删除文件信息表
     *
     * @param sysFileInfoParam 删除参数
     */
    void delete(SysFileInfoParam sysFileInfoParam);

    SysFileInfoResult getFileInfoResult(Long fileId);
}
